package com.augurit.common.system.service.org;

import java.util.List;

import org.springside.modules.orm.Page;

import com.augurit.common.base.service.IBaseService;
import com.augurit.common.system.web.org.form.AcUserShortcutForm;

/**
 * 用户自定义的快捷菜单接口
 */
public interface IAcUserShortcutService extends IBaseService<AcUserShortcutForm, Long> {
	
	
	public List<AcUserShortcutForm> getShortcuts(Long userId);
	
	/**
	 * 获取所有的快捷菜单
	 * @return
	 */
	public List<AcUserShortcutForm> getShortcuts();
	
	/**
	 * 分页获取用户的菜单
	 * @param page
	 * @param userId
	 * @return
	 */
	public Page<AcUserShortcutForm> getShortcuts(Page<AcUserShortcutForm> page);
	
	/**
	 * 分页获取用户的菜单
	 * @param page
	 * @param userId
	 * @return
	 */
	public Page<AcUserShortcutForm> getShortcuts(Page<AcUserShortcutForm> page, AcUserShortcutForm form, Long userId);
	
	/**
	 * 获取拥有指定快捷菜单的用户
	 * @param menuId 菜单id
	 * @return
	 */
	public Long[] getUserIdsOwnedShortcuts(Long menuId);
	
	/**
	 * 插入快捷菜单到某个用户所有快捷菜单最前面
	 * @param userId
	 * @param menuIds
	 */
	public void insertAtFirst(Long userId, Long...menuIds);
	
	/**
	 * 插入快捷菜单到某个用户所有快捷菜单最后面
	 * @param userId
	 * @param menuIds
	 */
	public void insertAtLast(Long userId, Long...menuIds);
	
	/**
	 * 从中间插入快捷菜单
	 * @param userId 用户id
	 * @param pos 插入的位置
	 * @param menuIds 快捷菜单列表
	 */
	public void insertAtMiddle(Long userId, int pos, Long...menuIds);
	
	/**
	 * 清空指定用户的所有快捷菜单
	 * @param userId 用户id
	 */
	public void clearShortcut(Long userId);
	
	/**
	 * 删除用户的快捷菜单
	 * @param userId
	 * @param menuIds
	 */
	public void deleteShortcutFromUser(Long userId, Long...menuIds);
	
	/**
	 * 删除一批用户对快捷菜单的使用
	 * @param menuId 
	 * @param userIds
	 */
	public void deleteUsersFromShortcut(Long menuId, Long... userIds);
	
	/**
	 * 获取指定用户拥有的快捷菜单id数组
	 * @param userId 用户id
	 * @return 菜单id数组
	 */
	public Long[] getShortcutIdsByUserId(Long userId);
	
	//public void insertShortcuts(Long userId, String pos, Long...menuIds);
    
}
